package kaiao.sum;

import java.util.HashMap;
import java.util.Map;

/**
 * @author kai.ao
 * @since 2024/5/12
 */
public class 两数之和 {

	public static void main(String[] args) {

	}

	public int[] twoSum(int[] nums, int target) {

		// 思路，利用map匹配的方式记录，最后返回
		int[] returnIndex = new int[2];
		Map<Integer, Integer> numAndIndexMap = new HashMap<>();

		// 循环遍历数组找到匹配的值
		for (int i = 0; i < nums.length; i++) {
			int num = nums[i];
			if (numAndIndexMap.containsKey(target - num)) {

				// 此处还需要注意的是，可能会返回重复位置的值 如 num[1] = 3, target = 6,在本for循环中添加减少了此类问题
				returnIndex[0] = i;
				returnIndex[1] = numAndIndexMap.get(target - num);
				break;
			}

			numAndIndexMap.put(nums[i], i);
		}

		return returnIndex;
	}
}
